//继承：类与类之间的关系
//继承后类与类之间的叫法
//A继承了B这个类，A叫子类，B叫基类
//子类--->派生类
//基类--->超类(父类)
(() => {
  class Person {
    name: string;
    age: number;
    gender: string;

    constructor(name: string, age: number, gender: string) {
      this.name = name;
      this.age = age;
      this.gender = gender;
    }

    sayHi(str: string) {
      console.log(`我是：${this.name},${str}`);
    }
  }

  class Student extends Person {
    constructor(name: string, age: number, gender: string) {
      super(name, age, gender);
    }
    sayHi() {
      super.sayHi("哈哈");
    }
  }

  const person = new Person('大明',45,'男')
  person.sayHi('嘎嘎')

  const stu = new Student('小甜甜',16,'女')
  stu.sayHi()

  //类和类之间要有继承关系，需要使用extends关键字
  //子类中可以调用父类中的构造函数，使用的是super关键字(包括调用父类中的实力方法，也可以使用super)
  //子类可以重写父类中的方法
})();
